package com.jt.controller;

import com.jt.pojo.Item;
import com.jt.pojo.ItemDesc;
import com.jt.vo.EasyUITable;
import com.jt.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import com.jt.service.ItemService;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/item/")
public class ItemController {
	
	@Autowired
	private ItemService itemService;

	/**
	 * 需求：根据商品id查询商品详情
	 * url：
	 * 参数：
	 * 返回值： SysResult对象
	 */
	@RequestMapping("query/item/desc/{itemId}")
	public SysResult findItemDescById(@PathVariable Long itemId){
		ItemDesc itemDesc=itemService.findItemDescById(itemId);
		return SysResult.success(itemDesc);
	}

	/**
	 * 实现商品的上架和下架操作
	 * url：item/updateStatus/status
	 * 参数:状态码信息
	 * 返回值：SysResult对象
	 */
	@RequestMapping("updateStatus/{status}")
	public SysResult updateStatus(@PathVariable Integer status,Long [] ids){
		itemService.updateStatus(status, ids);
		return SysResult.success();
	}

	/**
	 * 实现商品删除操作：
	 * 				1.url：item/delete
	 * 				2.参数： ids 100，101，102 servlet(request) 同名提交问题
	 * 				3.返回值 SysResult
	 * @param ids 商品id数组
	 * @return SysResult
	 * springMVC规则：如果传递的数据是由，号分隔的字符串则可以使用数组接收
	 */
	@RequestMapping("delete")
	public SysResult deleteItems(Long [] ids){
		itemService.deleteItems(ids);
		return SysResult.success();
	}

	/**
	 * 实现商品修改操作
	 * 			1.url：item/update
	 * 			2.form表单提交(form表单用商品对象接收)
	 * 			3.SysResult
	 * @param item 商品对象
	 * @return SysResult
	 */
	@RequestMapping("update")
	public SysResult updateItem(Item item,ItemDesc itemDesc){
		itemService.updateItem(item,itemDesc);
		return SysResult.success();
	}

	/**
	 * 业务需求：完成商品入库操作
	 * 注意事项：
	 * 		1.防止出错，添加try catch
	 * 		2.新增商品的状态信息应该为1（正常）
	 * 		3.入库操作时，完成时间的记录
	 *
	 * 请求参数：
	 * 		1.url：/item/save
	 * 		2.请求参数：form表单  对象接收
	 * 		3.返回值：系统级别的vo对象
	 * 知识复习：
	 */
	@RequestMapping("save")
	public SysResult saveItem(Item item, ItemDesc itemDesc){
		/*try {
			itemService.saveItem(item);
			return SysResult.success();
		}catch (Throwable e){
			e.printStackTrace();
			return SysResult.fail();
		}*/
		itemService.saveItem(item,itemDesc);
		return SysResult.success();
	}

	/**
	 * 业务需求：
	 * 		以分页形式查询商品列表信息
	 * 	url：http://localhost:8091/item/query?page=18&rows=20-
	 * @param page 当前页数
	 * @param rows 当前页行数
	 * @return	EasyUITable对象
	 */
	@RequestMapping("query")
	public EasyUITable findItemByPage(Integer page,Integer rows){
		return itemService.findItemByPage(page,rows);
	}
	
	
}
